﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace GLinq
{
    public class GridSize
    {
        private int[] size;

        public int Dimension { get { return size.Length; } }

        public int this[int x]
        {
            get { return size[x]; }
            set { size[x] = value; }
        }

        public GridSize(params int[] sizes)
        {
            this.size = sizes;
        }
    }

    public class Grid<T> : Mergeable
    {
        internal GLinqExpression Expression;
        internal Grid(GLinqExpression expr)
        {
            this.Expression = expr;
        }
        public T this[params int[] id]
        {
            get
            {
                throw new NotImplementedException();
            }
        }
        public static Grid<T> Create(GridSize size, string dataSrc = "")
        {
            return new Grid<T>(new InputGridExpression(size, typeof(T), dataSrc));
        }
    }
}
